/**
 * 
 */
package com.eej.act.obj.plgn;

import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;

import org.apache.cordova.api.PluginResult;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.util.Log;

import com.eej.act.obj.Arraunlaria;
import com.eej.act.obj.DataManager;
import com.eej.act.obj.Estropada;
import com.eej.act.obj.Liga;
import com.eej.act.obj.ListaEstropada;
import com.eej.act.obj.ListaTaldea;
import com.eej.act.obj.Taldea;
import com.phonegap.api.Plugin;

/**
 * @author jlumietu
 *
 */
public class LeagueDataAccessPlugin extends Plugin {

	DataManager dataManager = null;
	
	/**
	 * 
	 */
	public LeagueDataAccessPlugin() {
		// TODO Auto-generated constructor stub
		if(dataManager == null)
			dataManager = DataManager.getDataManager();
			//dataManager = new DataManager();*/
	}

	/* (non-Javadoc)
	 * @see org.apache.cordova.api.Plugin#execute(java.lang.String, org.json.JSONArray, java.lang.String)
	 */
	@Override
	public PluginResult execute(String action, JSONArray data, String callbackId) {
		// TODO Auto-generated method stub
		String idLiga = null;
		String equipo = null;
		try{
			if (data.length()>0)
				idLiga = data.getString(0);
			if (data.length()>1)
				equipo = data.getString(1);
		}catch(JSONException jsonex){
			return new PluginResult(PluginResult.Status.ERROR, jsonex.getMessage());
		}
		Log.d("execute", "action = " + action);
		if (action.equals("getEquiposLiga")) {
			Log.e("LeagueDataAccessPlugin", "action " + action);
			return new PluginResult(PluginResult.Status.OK, this.getEquiposLiga(idLiga));

		}else if(action.equals("getCalendarioLiga")) {
			Log.e("LeagueDataAccessPlugin", "action " + action);
			return new PluginResult(PluginResult.Status.OK, this.getCalendarioLiga(idLiga));
		}else if(action.equals("getRemerosEquipo")) {
			Log.e("LeagueDataAccessPlugin", "action " + action);
			return new PluginResult(PluginResult.Status.OK, this.getRemerosEquipo(idLiga, Integer.parseInt(equipo)));
		}
		Log.e("FlashLight", "action not supported: " + action);
		return new PluginResult(PluginResult.Status.INVALID_ACTION, "ACTION UNKNOWN");
	}
	
	/**
	 * 
	 * @param idLiga
	 * @return
	 * @throws JSONException 
	 */
	public JSONArray getEquiposLiga(String idLiga){
		Log.d("getEquiposLiga", "Entrando en getEquiposLiga, idLiga = " + idLiga);
		JSONArray jsonArray = new JSONArray();
		DataManager dataManager = DataManager.getDataManager();
		Log.d("getEquiposLiga", "Entrando en getEquiposLiga, paso 2");
		Liga liga = dataManager.getLiga(idLiga);
		Log.d("getEquiposLiga", "Entrando en getEquiposLiga, paso 3-> Liga " + liga);
		ListaTaldea lisTalde = liga.getEquipos();
		Log.d("getEquiposLiga", "A recorrer el listado: numero de equipos = " + lisTalde.size());
		for(Enumeration<Integer> equipos = lisTalde.keys(); equipos.hasMoreElements();){
			int theKey = equipos.nextElement().intValue();
			Taldea eq = lisTalde.get(theKey);
			// tratarlo
			JSONObject team = new JSONObject();
			try {
				Log.d("Devolviendo equipos", eq.getIzena() + " => " + eq.getWeb());
				team.put("idEquipo", theKey);
				team.put("izena", eq.getIzena());
				team.put("argazkia", eq.getArgazkia());
				team.put("grupo", eq.getGrupo());
				team.put("helbidea1", eq.getHelbidea1());
				team.put("helbidea2", eq.getHelbidea2());
				team.put("helbidea3", eq.getHelbidea3());
				team.put("telefono", eq.getTelefonoa());
				team.put("email", eq.getEmaila());
				team.put("logo", eq.getLogo());
				team.put("web", eq.getWeb());
			} catch (JSONException e) {
				// TODO Auto-generated catch block
				Log.e("getRemerosEquipo", e.getMessage());
				e.printStackTrace();
			}
			jsonArray.put(team);
		}
		
		return jsonArray;
	}
	
	/**
	 * 
	 * @param idLiga
	 * @param idEquipo
	 * @return
	 */
	public JSONArray getRemerosEquipo(String idLiga, int idEquipo){
		JSONArray jsonArray = new JSONArray();
		//DataManager dataManager = DataManager.getDataManager();
		Taldea talde = dataManager.getLiga(idLiga).getEquipos().get(idEquipo);
		for(Iterator<Arraunlaria> equipos = talde.getArraunlariak().iterator(); equipos.hasNext();){
			Arraunlaria arraunlari = equipos.next();
			JSONObject json = new JSONObject();
			try{
				json.put("nombre", arraunlari.getNombre());
				json.put("apellido", arraunlari.getApellido());
				json.put("foto", arraunlari.getFoto());
				json.put("nacimiento", arraunlari.getNacimiento());
				json.put("lugar", arraunlari.getLugar());
				json.put("antiguedad", arraunlari.getAntiguedad());
				json.put("procedencia", arraunlari.getProcedencia());
			}catch(Exception e){
				Log.e("getRemerosEquipo", e.getMessage());
			}
			jsonArray.put(json);
		}
		return jsonArray;
	}
	
	
	/**
	 * 
	 * @param idLiga
	 * @return
	 */
	public JSONArray getCalendarioLiga(String idLiga){
		JSONArray jsonArray = new JSONArray();
		//DataManager dataManager = DataManager.getDataManager();
		Liga liga = dataManager.getLiga(idLiga);
		ListaEstropada calendario = liga.getEstropadak();
		Enumeration<Integer> keys = calendario.keys();
		List<Integer> list = Collections.list(keys);
        Collections.sort(list);
		for(Iterator<Integer> theKeys = list.iterator();theKeys.hasNext(); ){
			int key = theKeys.next();
			Estropada estropada = calendario.get(key);
			JSONObject json = new JSONObject();
			try{
				Log.d("getCalendarioLiga", key + " = " + estropada.getIzena());
				json.put("id", estropada.getIdEstropada());
				json.put("izena", estropada.getIzena());
				json.put("lekua", estropada.getLekua());
				json.put("data", estropada.getData());
				json.put("ordua", estropada.getOrdua());
				
			}catch(Exception e){
				Log.e("getCalendarioLiga", e.getMessage());
			}
			jsonArray.put(json);
		}
		return jsonArray;
	}
	

}
